package com.ruoyi.pingan.fymodule.goodsinfo.goods.service;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.pingan.fymodule.goodsinfo.goods.entity.SxoGoods;
import com.ruoyi.pingan.fymodule.goodsinfo.goods.param.SxoGoodsAddParam;
import com.ruoyi.pingan.fymodule.goodsinfo.goods.param.SxoGoodsEditParam;
import com.ruoyi.pingan.fymodule.goodsinfo.goods.param.SxoGoodsIdParam;
import com.ruoyi.pingan.fymodule.goodsinfo.goods.param.SxoGoodsPageParam;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 商品信息Service接口
 *
 * @author wangy
 * @date  2025/07/25 11:54
 **/
public interface SxoGoodsService extends IService<SxoGoods> {

    /**
     * 获取商品信息分页
     *
     * @author wangy
     * @date  2025/07/25 11:54
     */
    Page<SxoGoods> page(SxoGoodsPageParam sxoGoodsPageParam);

    /**
     * 添加商品信息
     *
     * @author wangy
     * @date  2025/07/25 11:54
     */
    void add(SxoGoodsAddParam sxoGoodsAddParam);

    /**
     * 编辑商品信息
     *
     * @author wangy
     * @date  2025/07/25 11:54
     */
    void edit(SxoGoodsEditParam sxoGoodsEditParam);

    /**
     * 删除商品信息
     *
     * @author wangy
     * @date  2025/07/25 11:54
     */
    void delete(List<SxoGoodsIdParam> sxoGoodsIdParamList);

    /**
     * 获取商品信息详情
     *
     * @author wangy
     * @date  2025/07/25 11:54
     */
    SxoGoods detail(SxoGoodsIdParam sxoGoodsIdParam);

    /**
     * 获取商品信息详情
     *
     * @author wangy
     * @date  2025/07/25 11:54
     **/
    SxoGoods queryEntity(String id);

    /**
     * 下载商品信息导入模板
     *
     * @author wangy
     * @date  2025/07/25 11:54
     */
    void downloadImportTemplate(HttpServletResponse response) throws IOException;

    /**
     * 导入商品信息
     *
     * @author wangy
     * @date  2025/07/25 11:54
     **/
    JSONObject importData(MultipartFile file);

    /**
     * 导出商品信息
     *
     * @author wangy
     * @date  2025/07/25 11:54
     */
    void exportData(List<SxoGoodsIdParam> sxoGoodsIdParamList, HttpServletResponse response) throws IOException;
}
